package at.guigu.service.impl;

import at.guigu.domain.po.User;
import at.guigu.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

/**
 * `lambdaUpdate()`方法的需求示例
 */
@SpringBootTest
class UserServiceImplTestFour {
    @Autowired
    private IUserService userService;

    /**
     * 基于IService的`lambdaUpdate()`方法实现一个更新方法，满足以下需求：
     *  参数为id、username、balance
     *  id或username至少一个不为空，根据id或username精确匹配用户
     *  将匹配到的用户的余额修改为balance
     *  若balance为0，则将用户的status修改为冻结状态2
     * @param username
     * @param id
     * @param username
     * @param balance
     * @return List<User>
     */
    void test1(Long id, String username, Integer balance) {
        if (id == null && username == null) {
            throw new RuntimeException("id或username至少一个不为空");
        }
        userService.lambdaUpdate()
                .set(User::getBalance, balance)
                .set(balance == 0, User::getStatus, 2)
                .eq(id != null, User::getId, id)
                .eq(username != null, User::getUsername, username)
                .update(); // update()是用来执行更新方法，若不加该方法就无法更新
    }
}